import re


class Regex_Management:
    def __init__(self, text):
        """
        正则表达式类，提供了一些常用的正则表达式操作方法

        """
        self.text = text

    def verify_email_format(self):
        """
        验证是否未邮箱格式 \n

        :return: 布尔值 \n
        """
        pattern = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
        return bool(re.match(pattern, self.text))

    def verify_phone_format(self):
        """
        验证是否为手机号 \n

        :return: 布尔值
        """
        pattern = r'^1[3-9]\d{9}$'
        return bool(re.match(pattern, self.text))

    def verify_id_card_format(self):
        """
        验证是否为身份证号码 \n

        :return: 布尔值
        """
        pattern = r'^\d{17}[\dX]$'
        return bool(re.match(pattern, self.text))

    def verify_chinese_characters(self):
        """
        验证是否存在中文字符 \n

        :return: 布尔值
        """
        pattern = r'[\u4e00-\u9fff]'
        return bool(re.search(pattern, self.text))

    def verify_digits(self):
        """
        验证是否存在数字 \n

        :return: 布尔值
        """
        pattern = r'\d'
        return bool(re.search(pattern, self.text))

    def verify_uppercase_letters(self):
        """
        验证是否存在大写字母 \n

        :return: 布尔值
        """
        pattern = r'[A-Z]'
        return bool(re.search(pattern, self.text))

    def verify_lowercase_letters(self):
        """
        验证是否存在小写字母 \n

        :return: 布尔值
        """
        pattern = r'[\u4e00-\u9fff]'
        return bool(re.search(pattern, self.text))

    def verify_symbols(self):
        """
        验证是否存在除了26个小写字母、26个大写字母、0-9的数字以外的符号 \n

        :return: 布尔值
        """
        pattern = r'[^a-zA-Z0-9]'
        return bool(re.search(pattern, self.text))

    def verify_lengthrange_format(self, range_value: list = [6, 10]):
        """
        验证字符串的长度范围 \n

        :param range_value：范围，列表格式，默认6-10，不包括10 \n
        :return: 布尔值 \n
        """
        min_length, max_length = range_value
        return min_length <= len(self.text) < max_length

    def split_by_symbol(self, symbol: str):
        """
        使用正则表达式根据指定符号进行分割 \n

        :param symbol: 传入的分割符号 \n
        :return:布尔值 \n
        """
        pattern = re.escape(symbol)
        parts = re.split(pattern, self.text)
        # 使用列表推导式去除空字符串
        filtered_parts = [part for part in parts if part]
        return filtered_parts
